package org.yzhzc.friend.controller.question;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.yzhzc.common.core.domain.R;
import org.yzhzc.common.core.domain.TableDataInfo;
import org.yzhzc.friend.domain.question.dto.QuestionQueryDTO;
import org.yzhzc.friend.domain.question.vo.QuestionDetailVO;
import org.yzhzc.friend.domain.question.vo.QuestionVO;
import org.yzhzc.friend.service.question.IQuestionService;

import java.util.List;

/**
 * 题目控制器。
 * 提供题目列表查询、热门题目查询、题目详情查询以及题目导航等功能。
 */
@RestController
@RequestMapping("/question") // 基础路径为 /question
public class QuestionController {

    @Autowired
    private IQuestionService questionService; // 题目服务接口

    /**
     * 查询题目列表。
     *
     * @param questionQueryDTO 题目查询条件
     * @return 分页数据
     */
    @GetMapping("/semiLogin/list")
    public TableDataInfo list(QuestionQueryDTO questionQueryDTO) {
        return questionService.list(questionQueryDTO);
    }

    /**
     * 查询热门题目列表。
     *
     * @return 热门题目列表
     */
    @GetMapping("/semiLogin/hotList")
    public R<List<QuestionVO>> hotList() {
        return R.ok(questionService.hotList());
    }

    /**
     * 查询题目详情。
     *
     * @param questionId 题目ID
     * @return 题目详情
     */
    @GetMapping("/detail")
    public R<QuestionDetailVO> detail(Long questionId) {
        return R.ok(questionService.detail(questionId));
    }

    /**
     * 获取当前题目的上一个题目ID。
     *
     * @param questionId 当前题目ID
     * @return 上一个题目ID
     */
    @GetMapping("/preQuestion")
    public R<String> preQuestion(Long questionId) {
        return R.ok(questionService.preQuestion(questionId));
    }

    /**
     * 获取当前题目的下一个题目ID。
     *
     * @param questionId 当前题目ID
     * @return 下一个题目ID
     */
    @GetMapping("/nextQuestion")
    public R<String> nextQuestion(Long questionId) {
        return R.ok(questionService.nextQuestion(questionId));
    }
}
